Field of the Invention
The present invention relates in general to the field of computers and similar technologies, and in particular to software utilized in this field. Still more particularly, it relates to a method, system and computer-usable medium for load based dynamic resources sets.
Description of the Related Art
Often computer systems execute multiple processes simultaneously on multiple resources. For example, an application generates multiple threads that execute simultaneously on multiple processors to process information more rapidly. In some instances, multiple processors coordinate to execute processes through embedded hardware or firmware under the management of an operating system, such as a Unix based operating system that manages processes run on a multi-core central processing unit (CPU). In other instances, management software coordinates execution of multiple processes across multiple computer systems, each of which has multiple CPUs with multiple cores, such as hypervisor or similar virtual machine operating system that manages execution of virtual machines on networked servers.
One difficulty with distributed execution of an application or other process in a multi-processor environment is that the overhead associated with managing execution of instructions can become complex. Another difficulty is that processes with lower priorities may consume excessive amounts of resources and thereby negatively impact the execution of higher priority processes. One solution to these difficulties is the use of resource sets. Resource sets restrict an application's threads to run on only a specified processor or set processors. The identifiers for the processor(s) that a process is allowed to run on are specified at the time that the resource set is defined or created. Using resource sets tends to improve processor and cache affinity and isolates workloads for better control. A disadvantage of resources sets is that multiple workloads can become unbalanced across available resources. For instance, the number of threads associated with a process sometimes grows in unpredictable manners as new threads are created by the process or the load generated by existing threads grows unexpectedly. Different rates of resource use by different processes in different resource sets can sometimes result in overloaded resources that hurt performance for some processes while other resources are underutilized.